package gcj2011.round1c;

import java.util.Arrays;

import common.AbstractRunner;
import common.AbstractRunner.SIZE;

public class B extends AbstractRunner {

	@Override
	public void handleCase(int caseNumber) throws Exception {
		long t;
		int l, c, n;
		long d[];
		
		l = scanner.nextInt();
		t = scanner.nextLong();
		n = scanner.nextInt();
		c = scanner.nextInt();
				
		d = new long[n];
		for (int i=0; i<c; i++) {
			int k = i;
			long ai = 2*scanner.nextLong();
			while (k<n) {
				d[k] = ai;
				k += c;
			}
		}
		
		long acc = 0;
		int i=0;
		while (i<n && acc+d[i] < t) {
			acc += d[i];
			i++;
		}
		
		if (i == n) {
			out.write(acc+"\n");
			return;
		}
		
		d[i] = acc+d[i]-t;
		acc = t;
		
		Arrays.sort(d, i, n);
		
		int j = n-1;
		while (j >= i) {
			if (l > 0) {
				acc += d[j] / 2;
				l --;
			} else {
				acc += d[j];
			}
			j--;
		}
		
		out.write(acc+"\n");
	}
	
	public static void main(String[] args) throws Exception {
		new B().init(SIZE.large).execute();
	}

}
